import $store from './storage'
import $http from '../http'
import $toast from './toast'
import $fn from '../fn'

const Index = option => {
    const opt = {
        tokenApi: 'user/login_again',
        first:false,
        ...option
    }
    wx.checkSession({       // 检测 session_key 是否过期
        success (e) {
            if($store.getToken()){
                if(!opt.first){
                    // token 存在，且过期，以旧换新
                    $http.post(null, opt.tokenApi, { loading:false }).then(data=>{
                        if( data ){
                            let user = $store.getUser()
                            user.token = data
                            $store.local('user', user)
                            opt?.ok?.()
                        }
                    })
                }else{
                    opt?.ok?.()
                }
            }else{
                login(option)
            }
        },
        fail () {    // session_key 过期重新登录
            login(option)    
        }
    })
}
const login = option => {
    const opt = {
        api: 'user/login',
        ...option
    }
    // 发送 res.code 到后台换取 openId, sessionKey, unionId，并加密成 token
    wx.login({
        success: ({ code }) => {
            $http.post(null, opt.api, { param: { code }, token:false, loading:false }).then(data=>{
                if( data?.errmsg ){
                    $toast.error('登录失败')
                }else{
                    $store.local('user',data)
                    opt?.ok?.()
                }
            })
        },
        fail: () => {
            $toast.error('微信未登录')
        }
    })
}

export default Index